package com.swf.seed.test.http;
 
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
 
public class HTTPSClient {
         private static class TrustAnyTrustManager implements X509TrustManager {
                   public void checkClientTrusted(X509Certificate[] chain, String authType)
                                     throws CertificateException {
                   }
 
                   public void checkServerTrusted(X509Certificate[] chain, String authType)
                                     throws CertificateException {
                   }
 
                   public X509Certificate[] getAcceptedIssuers() {
                            return new X509Certificate[] {};
                   }
         }
 
         private static class TrustAnyHostnameVerifier implements HostnameVerifier {
                   public boolean verify(String hostname, SSLSession session) {
                            return true;
                   }
         }
 
         public static void main(String[] args) throws Exception {
                   InputStream in = null;
                   OutputStream out = null;
                   byte[] buffer = new byte[4096];
                   String str_return = "";
                   try {
                            SSLContext sc = SSLContext.getInstance("SSL");
                            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
                                               new java.security.SecureRandom());
                            //URL console = new URL("https://10.37.175.249/ecs/paf/query/balance?sign_type='MD5'&service_version='1'&input_charset='1'&sign='1'&sign_key_index='1'&channel_id=PINGANBANK&partner=270&sp_user=19014168551005");
                           // String para = "channel_id=PINGANBANK&input_charset=GB2312&partner=270&service_version=1.0&sign_key_index=1&sign_type=SHA-1&sp_user=19014168551005&z=";
                         //   String z = java.net.URLEncoder.encode("你好","GBK");
                         //   para += z;
                         //   String url = para +"&sign="+SHA1Util.SHA1Encode(para,"GBK");
                          //  url = java.net.URLEncoder.encode(url,"UTF-8");
                         //   String addr = "https://192.168.52.139:8002/ecs/paf/query/balance?"+url;
                           String addr = "https://192.168.52.139:8002/ecs/paf/query/balance";
                            System.out.println(addr);
                            URL console = new URL(addr);
                           
                           
                            HttpsURLConnection conn = (HttpsURLConnection) console
                                               .openConnection();
                            conn.setRequestMethod("POST");
                            conn.setSSLSocketFactory(sc.getSocketFactory());
                            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
                            conn.setDoOutput(true);
                            conn.setUseCaches(false); 
                            conn.connect();
                            conn.getOutputStream().write("sign=啊啊&channel_id=PINGANBANK&input_charset=GB2312&partner=270&service_version=1.0&sign_key_index=1&sign_type=SHA-1&sp_user=19014168551005&z=啊啊".getBytes("GBK"));
                            InputStream is = conn.getInputStream();
                            DataInputStream indata = new DataInputStream(is);
                            String ret = "";
                            while (ret != null) {
                                     ret = indata.readLine();
                                     if (ret != null && !ret.trim().equals("")) {
                                               str_return = str_return
                                                                 + new String(ret.getBytes("ISO-8859-1"), "GBK");
                                     }
                            }
                            conn.disconnect();
                   } catch (ConnectException e) {
                            System.out.println("ConnectException");
                            System.out.println(e);
                            throw e;
                   } catch (IOException e) {
                            System.out.println("IOException");
                            System.out.println(e);
                            throw e;
                   } finally {
                            try {
                                     in.close();
                            } catch (Exception e) {
                            }
                            try {
                                     out.close();
                            } catch (Exception e) {
                            }
                   }
                   System.out.println(str_return);
         }
}